using AiQiuQuan.Sport.Model.Models;
using AiQiuQuan.Sport.Core;

namespace AiQiuQuan.Sport.WebApi.Services
{
    /// <summary>
    /// 活动管理
    /// </summary>
    public interface IActivityService : ITransientDependency
    {
        /// <summary>
        /// 查询一条记录
        /// </summary>
        Task<ActivityDto> GetAsync(Guid id);

        /// <summary>
        /// 查询一条记录
        /// </summary>
        Task<ActivityDto> QueryAsync(ActivitDetailRequestDto request);

        /// <summary>
        /// 分页查询
        /// </summary>
        Task<PageResult<ActivityDto>> PageListAsync(ActivityPageReqestDto request);

        /// <summary>
        /// 新增
        /// </summary>
        Task<UnaryResult> AddAsync(ActivityAddDto model);

        /// <summary>
        /// 修改
        /// </summary>
        Task<UnaryResult> UpdateAsync(ActivityUpdateDto model);

        /// <summary>
        /// 修改活动状态
        /// </summary>
        Task<UnaryResult> UpdateStateAsync(ActivityStateUpdateDto model);

        /// <summary>
        /// 删除
        /// </summary>
        Task<UnaryResult> DeleteAsync(Guid id);

        /// <summary>
        /// 活动用户列表查询
        /// </summary>
        /// <param name="activityId">活动ID</param>
        Task<List<ActivityUserSimpleDto>> QueryActivityUserListAsync(Guid activityId);

        /// <summary>
        /// 活动用户列表查询,通过订单ID
        /// </summary>
        /// <param name="orderId">订单ID</param>
        Task<List<ActivityUserSimpleDto>> QueryActivityUserListByOrderIdAsync(Guid orderId);

        /// <summary>
        /// 活动报名
        /// </summary>
        Task<UnaryResult<ActivityJoinResultDto>> JoinAsync(ActivityUserAddDto request);
    }
}
